//
// Copyright (c) 2015, Microsoft Corporation
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
// IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
//

#pragma once

#include "MockAdapterDevice.h"
#include "MockAdapter.h"
namespace AdapterLib
{
    ref class MockLampDevice : MockAdapterDevice
    {
    internal:
        MockLampDevice(Platform::String^ Name, MockAdapter^ ParentObject);
        
        uint32 Initialize();
        
        property BridgeRT::State^ LampState
        {
            BridgeRT::State^ get() { return m_lampState; }
            void set(BridgeRT::State^ lampState) { m_lampState = lampState; }
        }

    private:

        // Set "LampStateChanged" signal
        uint32 setLampStateChangedSignal();

        // Lamp State
        BridgeRT::State^ m_lampState;
    };
}
